//读取文件用的模块
const fs=require('fs');

/**
 *
 * @param {*当前页的数量} pageSize
 * @param {*当前页} currentPage
 * @param {*当前数组} arr
 *
 * 总32条
 * 8
 * 1 2
 */
function pagination(pageSize, currentPage, arr) {
    let skipNum = (currentPage - 1) * pageSize;
    let newArr = (skipNum + pageSize >= arr.length) ? arr.slice(skipNum, arr.length) : arr.slice(skipNum, skipNum + pageSize);
    return newArr;
}

// 升序还是降序
/**
 *
 * @param {*排序的属性} attr
 * @param {*true表示升序排序 false表示降序排序} rev
 */

function sortBy(attr, rev) {
    if (rev === undefined) {
        rev = 1;
    } else {
        rev = rev ? 1 : -1;
    }
    return function (a, b) {
        a = a[attr];
        b = b[attr];
        if (a < b) {
            return rev * -1;
        }
        if (a > b) {
            return rev * 1;
        }
        return 0;
    }
}
function range(arr, gt, lte) {
    return arr.filter(item => item.salePrice >= gt && item.salePrice <= lte)
}

module.exports={
    devServer:{
        before(app,serve){
            app.get('/api/goods/home',(req,res) => {
                fs.readFile("./server/db/home.json",'utf8',(err,data)=>{
                    if(!err){
                        res.json(JSON.parse(data));
                    }
                });
            });
            app.get('/api/goods/allGoods',(req,res)=>{
                // console.log(req);
                const page=parseInt(req.query.page);//当前currentPage
                const size=parseInt(req.query.size);//分页的大小
                const sort=parseInt(req.query.sort);//是否按价格排序
                //价格最小值
                const gt=parseInt(req.query.priceGt);
                //价格最大值
                const lte=parseInt(req.query.priceLte);
                const cid=req.query.cid;
                // console.log(page,size,sort,gt,lte,cid);
                let newData=[];
                fs.readFile('./server/db/allGoods.json','utf8',(err,data) => {
                    let {result}=JSON.parse(data);
                    let allData=result.data;
                    //分页显示
                    newData=pagination(size,page,allData);
                    if (cid==='1184') {
                        //品牌周边
                        const newData1=allData.filter((item)=>item.productName.match(RegExp(/Smartisan/)));
                        newData=newData1;
                        if(sort===1){
                            //价格由低到高
                            newData=newData.sort(sortBy('salePrice',true))
                        }else if(sort===-1){
                            //价格由高到低
                            newData=newData.sort(sortBy('salePrice',false))
                        }
                        if(gt&&lte) {
                            //过滤价格区间
                            newData=range(newData,gt,lte)
                            // console.log(newData)
                        }
                        if(newData.length <size) {
                            res.json({
                                data:newData,
                                total:newData.length
                            });
                            // console.log(res);
                        } else {
                            // console.log(newData,newData.length)
                            //这个地方有问题，
                            res.json({
                                data:newData,
                                total:newData1.length
                            });
                            // console.log(res);
                        }

                    } else {

                        if(sort===1){
                            //价格由低到高
                            newData=newData.sort(sortBy('salePrice',true))
                        }else if(sort===-1){
                            //价格由高到低
                            newData=newData.sort(sortBy('salePrice',false))
                        }
                        if(gt&&lte) {
                            //过滤价格区间
                            newData=range(newData,gt,lte)
                            // console.log(newData)
                        }
                        if(newData.length <size) {
                            res.json({
                                data:newData,
                                total:newData.length
                            });
                            // console.log(res);
                        } else {
                            // console.log(newData,newData.length)
                            //这个地方有问题，
                            res.json({
                                data:newData,
                                total:allData.length
                            });
                            // console.log(res);
                        }
                    }


                });
            });
            app.get('/api/goods/productDet',(req,res)=>{
                const productId=req.query.productId;
                console.log(productId);
                fs.readFile('./server/db/goodsDetail.json','utf8',(err,data)=>{
                    if(!err){
                        let {result}=JSON.parse(data);
                        let newData=result.find(item=>item.productId==productId);
                        res.json(newData);
                    }
                })
            });
        }
    }
};